/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ifrr.gepro.estoria.handler;

import br.ifrr.gepro.estoria.bean.EstoriasBean;
import br.ifrr.gepro.estoria.bean.SituacaoEstoriaBean;
import br.ifrr.gepro.estoria.dao.EstoriasDao;
import br.ifrr.gepro.projeto.bean.ProjetoBean;
import br.ifrr.gepro.projeto.dao.ProjetoDao;
import br.ifrr.gepro.sprint.handler.SprintMB;
import br.ifrr.gepro.util.DAOException;
import br.ifrr.gepro.util.JsfUtil;
import br.ifrr.gepro.util.Navegacao;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

/**
 *
 * @author rafael
 */
@ManagedBean(name = "estoria")
@SessionScoped
public class EstoriasMB {

    private EstoriasBean novaestoria = new EstoriasBean();
    private HtmlSelectOneMenu projetoSelecionado = new HtmlSelectOneMenu();
    private HtmlSelectOneMenu situacaoSelecionada = new HtmlSelectOneMenu();
    private ArrayList<EstoriasBean> listaEstorias = new ArrayList<EstoriasBean>();
    private ArrayList<EstoriasBean> listaEstorias1 = new ArrayList<EstoriasBean>();

    public String preparaCadastro() {
        novaestoria = new EstoriasBean();
        return Navegacao.paginaCadEstoria;
    }

    public String preparaListar() {
        return null;
    }

    public String editar() throws DAOException {

        int e = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idEstoria"));
        novaestoria = (EstoriasBean) new EstoriasDao().selecionar(e);
        return Navegacao.paginaCadEstoria;
    }

    public String salva() throws DAOException {
        //novaestoria.setFkSituacao((SituacaoEstoriaBean) new EstoriasDao().selecionar(Integer.parseInt(situacaoSelecionada.getValue().toString())));
        novaestoria.setFkProj((ProjetoBean) new ProjetoDao().selecionar(Integer.parseInt(projetoSelecionado.getValue().toString())));
        if (novaestoria.getIdEst() == null) {
            novaestoria.setFkSituacao(new SituacaoEstoriaBean(6));
            new EstoriasDao().inserir(getNovaestoria());
        } else {
            new EstoriasDao().alterar(getNovaestoria());
        }
        JsfUtil.showMessageInfo("Cadastro realizado com sucesso!");
        novaestoria = new EstoriasBean();
        return Navegacao.paginaPrincipal;
    }

    public String excluir() {
        try {
            int e = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idEstoria"));
            new EstoriasDao().excluir(new EstoriasBean(e));
            JsfUtil.showMessageInfo("Operação realizada com sucesso!");
        } catch (Exception e) {

            System.out.println(e.getMessage());
            System.out.println(e.getCause());
            JsfUtil.showMessageErro("Erro!");

        }
        return null;
    }

    /**
     * @return the novaestoria
     */
    public EstoriasBean getNovaestoria() {
        return novaestoria;
    }

    /**
     * @param novaestoria the novaestoria to set
     */
    public void setNovaestoria(EstoriasBean novaestoria) {
        this.novaestoria = novaestoria;
    }

    public HtmlSelectOneMenu getProjetoSelecionado() {
        return projetoSelecionado;
    }

    public void setProjetoSelecionado(HtmlSelectOneMenu projetoSelecionado) {
        this.projetoSelecionado = projetoSelecionado;
    }

    public ArrayList<EstoriasBean> getListaEstorias() throws DAOException {
        SprintMB s = (SprintMB) JsfUtil.getMB("sprint");
        listaEstorias = (ArrayList<EstoriasBean>) new EstoriasDao().listarNaoConcluidas(s.getNovosprint().getFkProj().getIdProjeto());
        return listaEstorias;
    }

    public void setListaEstorias(ArrayList<EstoriasBean> listaEstorias) {
        this.listaEstorias = listaEstorias;
    }

    public HtmlSelectOneMenu getSituacaoSelecionada() {
        return situacaoSelecionada;
    }

    public void setSituacaoSelecionada(HtmlSelectOneMenu situacaoSelecionada) {
        this.situacaoSelecionada = situacaoSelecionada;
    }

    public List<EstoriasBean> getEstorias() throws DAOException {
        return new EstoriasDao().listar();
    }

    public List<SelectItem> getEstoriaCombo() throws DAOException {
        List<SelectItem> lista = new ArrayList<SelectItem>();
        for (EstoriasBean e : getEstorias()) {
            lista.add(new SelectItem(e.getIdEst(), e.getNome()));
        }
        return lista;
    }

    public ArrayList<EstoriasBean> getListaEstorias1() throws DAOException {
        listaEstorias1 = ((ArrayList<EstoriasBean>) new EstoriasDao().listar());
        return listaEstorias1;
    }

    public void setListaEstorias1(ArrayList<EstoriasBean> listaEstorias1) {
        this.listaEstorias1 = listaEstorias1;
    }
}
